<?php 
	//+--------------
	//|自动加载类文件
	//+--------------
	function __autoload($className){	
		if (strpos($className, "Model")>1){				
			include AppDir."/Lib/Model/".ucfirst($className).".class.php";		
		}elseif ($className=="Model"){		
			include 'CleverPHP/DALFactory/Model.class.php';		
		}elseif ($className=="IModel"){		
			include 'CleverPHP/IDAL/IModel.class.php';		
		}elseif (strpos($className,"Controller")>1){		
			include AppDir."/Lib/Controller/".ucfirst($className).".class.php";		
		}elseif ($className=="Controller"){		
			include 'CleverPHP/DALFactory/Controller.class.php';		
		}elseif ($className=="IController"){		
			include 'CleverPHP/IDAL/IController.class.php';				
		}elseif ($className=="ICache"){
			include ("CleverPHP/IDAL/ICache.class.php");
		}elseif ($className=="Cache"){
			include ("CleverPHP/DALFactory/Cache.class.php");
		}elseif ($className=="Ilog"){
			include ("CleverPHP/IDAL/ILog.class.php");
		}elseif ($className=="Log"){
			include ("CleverPHP/DALFactory/Log.class.php");
		}elseif ($className=="Session"){
			include ("CleverPHP/DALFactory/Session.class.php");
		}
	}
	//+---------------------------
	//|保证PATH_INFO后还能使用$_GET
	//+---------------------------
	function url_parse(){
		if(empty($_SERVER['PATH_INFO'])){		
			return ;
		}else {
			
			$url=substr($_SERVER['PATH_INFO'],1);		
			$url=str_replace(array("'",'"','.htm','.html'),array('','',''),$url);
			$url=explode('/',$url);
			$param_conte=count($url);
			for ($i=0;$i<$param_conte;$i+=2){
				if (isset($url[$i+1])&& !is_numeric($url[$i])) {
				   $_GET[$url[$i]]=$url[$i+1];	
				}
			}
			unset($param_conte,$url,$i);
		}
	}
	// xml编码
	function xml_encode($data,$encoding='utf-8',$root="Clever") {
	    $xml = '<?xml version="1.0" encoding="'.$encoding.'"?>';
	    $xml.= '<'.$root.'>';
	    $xml.= data_to_xml($data);
	    $xml.= '</'.$root.'>';
	    return $xml;
	}

	function data_to_xml($data) {
	    if(is_object($data)) {
	        $data = get_object_vars($data);
	    }
	    $xml = '';
	    foreach($data as $key=>$val) {
	        is_numeric($key) && $key="item id=\"$key\"";
	        $xml.="<$key>";
	        $xml.=(is_array($val)||is_object($val))?data_to_xml($val):$val;
	        list($key,)=explode(' ',$key);
	        $xml.="</$key>";
	    }
	    return $xml;
	}
	/**
	 * 导入扩展文件
	 * Enter description here ...
	 * @param unknown_type $Namespace  命名空间
	 * @param unknown_type $BasePath  基础路径
	 * @param unknown_type $extension  扩展后辍
	 */
	function using($Namespace,$BasePath=NULL,$extension=".class.php"){
		
	}
	/**
	 * 导入第3方扩展
	 * Enter description here ...
	 * @param unknown_type $Namespace
	 * @param unknown_type $BasePath
	 * @param unknown_type $extension
	 */
	function vendor($Namespace,$BasePath=NULL,$extension=".class.php") {	
		if (empty($Namespace))
		  exit("请按键格式提供类名");	
		$str=$Namespace;  
		if(stripos( $Namespace,".")>0)
		  $str=str_replace(".", "/", $Namespace);
		if ($BasePath==null){
			$fielname="CleverPHP/Vendor/".$str.$extension;	
		}elseif ($BasePath=="@"){
			$fielname=AppDir."/Lib/Vendor/".$str.$extension;	
		}else {
			$fielname=$BasePath."/Lib/Vendor/".$str.$extension;	
		}
	    require_once "$fielname";
	}
	function times(){
		return date("Y-m-d H:i:s");
	}
	/**
	 * 获取浏览器语言
	 * Enter description here ...
	 */
	function getBrowserLang(){
		$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
		//只取前4位，这样只判断最优先的语言。
		if (preg_match("/zh-c/i", $lang))
		    return "zh-cn";
		if (preg_match("/zh/i", $lang))
		    return  "zh-tw";
		else if (preg_match("/en/i", $lang))
		    return  "English";
		else if (preg_match("/fr/i", $lang))
		    return  "French";
		else if (preg_match("/de/i", $lang))
		    return  "German";
		else if (preg_match("/jp/i", $lang))
		    return  "Japanese";
		else if (preg_match("/ko/i", $lang))
		    return  "Korean";
		else if (preg_match("/es/i", $lang))
		    return  "Spanish";
		else if (preg_match("/sv/i", $lang))
		    return  "Swedish";
		else
		    return  false;
	}
	//检测是不存在着GD库
	function gd_version()
	{
	        static $version = -1;
	
	        if ($version >= 0)
	        {
	            return $version;
	        }
	
	        if (!extension_loaded('gd'))
	        {
	            $version = 0;
	        }
	        else
	        {
	            // 尝试使用gd_info函数
	            if (PHP_VERSION >= '4.3')
	            {
	                if (function_exists('gd_info'))
	                {
	                    $ver_info = gd_info();
	                    preg_match('/\d/', $ver_info['GD Version'], $match);
	                    $version = $match[0];
	                }
	                else
	                {
	                    if (function_exists('imagecreatetruecolor'))
	                    {
	                        $version = 2;
	                    }
	                    elseif (function_exists('imagecreate'))
	                    {
	                        $version = 1;
	                    }
	                }
	            }
	            else
	            {
	                if (preg_match('/phpinfo/', ini_get('disable_functions')))
	                {
	                    /* 如果phpinfo被禁用，无法确定gd版本 */
	                    $version = 1;
	                }
	                else
	                {
	                  // 使用phpinfo函数
	                   ob_start();
	                   phpinfo(8);
	                   $info = ob_get_contents();
	                   ob_end_clean();
	                   $info = stristr($info, 'gd version');
	                   preg_match('/\d/', $info, $match);
	                   $version = $match[0];
	                }
	             }
	        }
	
	        return $version;
	     
	}
	/**
	   * 检查图片处理能力
	   *
	   * @access  public
	   * @param   string  $img_type   图片类型
	   * @return  void
	*/
	function check_img_function($img_type)
	{
	        switch ($img_type)
	        {
	            case 'image/gif':
	            case 1:
	
	                if (PHP_VERSION >= '4.3')
	                {
	                    return function_exists('imagecreatefromgif');
	                }
	                else
	                {
	                    return (imagetypes() & IMG_GIF) > 0;
	                }
	            break;
	
	            case 'image/pjpeg':
	            case 'image/jpeg':
	            case 2:
	                if (PHP_VERSION >= '4.3')
	                {
	                    return function_exists('imagecreatefromjpeg');
	                }
	                else
	                {
	                    return (imagetypes() & IMG_JPG) > 0;
	                }
	            break;
	
	            case 'image/x-png':
	            case 'image/png':
	            case 3:
	                if (PHP_VERSION >= '4.3')
	                {
	                     return function_exists('imagecreatefrompng');
	                }
	                else
	                {
	                    return (imagetypes() & IMG_PNG) > 0;
	                }
	            break;
	
	            default:
	                return false;
	        }
	}
	/**
	     * 根据来源文件的文件类型创建一个图像操作的标识符
	     *
	     * @access  public
	     * @param   string      $img_file   图片文件的路径
	     * @param   string      $mime_type  图片文件的文件类型
	     * @return  resource    如果成功则返回图像操作标志符，反之则返回错误代码
	*/
	function img_resource($img_file, $mime_type)
	{
	      switch ($mime_type)
	        {
	            case 1:
	            case 'image/gif':
	                $res = imagecreatefromgif($img_file);
	                break;
	
	            case 2:
	            case 'image/pjpeg':
	            case 'image/jpeg':
	                $res = imagecreatefromjpeg($img_file);
	                break;
	
	            case 3:
	            case 'image/x-png':
	            case 'image/png':
	                $res = imagecreatefrompng($img_file);
	                break;
	
	            default:
	                return false;
	        }
	
	        return $res;
	}
	/**
	 * 检查目标文件夹是否存在，如果不存在则自动创建该目录
	 *
	 * @access      public
	 * @param       string      folder     目录路径。不能使用相对于网站根目录的URL
	 *
	 * @return      bool
	 */
	function make_dir($folder)
	{
	    $reval = false;
	
	    if (!file_exists($folder))
	    {
	        /* 如果目录不存在则尝试创建该目录 */
	        @umask(0);
	
	        /* 将目录路径拆分成数组 */
	        preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);
	
	        /* 如果第一个字符为/则当作物理路径处理 */
	        $base = ($atmp[0][0] == '/') ? '/' : '';
	
	        /* 遍历包含路径信息的数组 */
	        foreach ($atmp[1] AS $val)
	        {
	            if ('' != $val)
	            {
	                $base .= $val;
	
	                if ('..' == $val || '.' == $val)
	                {
	                    /* 如果目录为.或者..则直接补/继续下一个循环 */
	                    $base .= '/';
	
	                    continue;
	                }
	            }
	            else
	            {
	                continue;
	            }
	
	            $base .= '/';
	
	            if (!file_exists($base))
	            {
	                /* 尝试创建目录，如果创建失败则继续循环 */
	                if (@mkdir(rtrim($base, '/'), 0777))
	                {
	                    @chmod($base, 0777);
	                    $reval = true;
	                }
	            }
	        }
	    }
	    else
	    {
	        /* 路径已经存在。返回该路径是不是一个目录 */
	        $reval = is_dir($folder);
	    }
	
	    clearstatcache();
	
	    return $reval;
	}
    /**
     *  生成指定目录不重名的文件名
     *
     * @access  public
     * @param   string      $dir        要检查是否有同名文件的目录
     *
     * @return  string      文件名
     */
    function unique_name($dir)
    {
        $filename = '';
        while (empty($filename))
        {
            $filename = random_filename();
            if (file_exists($dir . $filename . '.jpg') || file_exists($dir . $filename . '.gif') || file_exists($dir . $filename . '.png'))
            {
                $filename = '';
            }
        }

        return $filename;
    }
        function random_filename()
    {
        $str = '';
        for($i = 0; $i < 9; $i++)
        {
            $str .= mt_rand(0, 9);
        }

        return (time() - date('Z')) . $str;
    }
    
	function getURL(){
		return "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
	}

?>